package com.googlecode.jtoy.patterns.singleton;

/**
 * 单例模式
 * 
 * 面向对象系统开发和设计过程中，我们会希望某个类的对象都表现得一致，像只有一个对象存在一样。Singleton模式很好地保证了获取单一对象，从而获得了单一对象表现的效果，
 * 但是Singleton模式却要付出以下几个代价（Robert . C Martin）：
 * 1）没有好的方法去Destroy（摧毁）Singleton对象、或解除其职责。即使将Singleton模式中的_instance显示地设置为null，还是不能解决问题：
 * 因为系统其他模块可能依旧持有对这个Singleton对象的引用
 * ，此模块中的instance方法的调用（获取Singleton对象，详细参见Singleton模式实现）又会创建一个新的实例。在C++中，由于可以
 * 2）效率问题：每次调用instance方法都要执行if语句，实际除了第一次创建实例有意义，其他的都是没有必要的；
 * 3）不能继承：Singleton派生出来的类并不是Singleton，需要添加静态函数和变量才能成为Singleton；
 * 4）不透明性：Singleton的使用者都知道自己在使用一个Singleton实例（调用instance方法，能不知道吗？），对于用户来说不透明（注意计算机中的透明和一般意义上透明的含义不同！）。
 * 
 * @author shangxj
 * @date Jun 19, 2011 4:51:32 PM
 */
public class Singleton {

	private static Singleton instance = new Singleton();

	private Singleton() {

	}

	public static Singleton getInstance() {

		return instance;
	}
}
/**
 * 另一种实现方式<br>
 * <code>
	public class Singleton {
	
		private static Singleton instance = null;
	
		private Singleton() {
	
		}
	
		public static Singleton getInstance() {
	
			if (instance == null) {
				instance = new Singleton();
			}
			return instance;
		}
	}
 *	</code>
 */
